#ifndef VEHICLEFSM_H
#define VEHICLEFSM_H

#include "basestate.h"
#include <Eigen/Dense>
class VehicleController;
namespace vehicle {
class FSM
{
public:
    //FSM();
    FSM(VehicleController *arm_controller);
    ~FSM();
    void Update();
    void SetState(BaseState::StateType state);

    BaseState::StateType GetCurState()const{return cur_state_->GetState();}
    BaseState::StateType GetLastState()const{return last_state_->GetState();}

    VehicleController *vehicle_controller_;
    BaseState *cur_state_;
    BaseState *last_state_;

private:
    BaseState *sleep_state_,*prepare_state_,*reset_state_,*working_state_,*pause_state_;
};


}


#endif // VEHICLEFSM_H
